WhatRoute owes its existence to the work by Van Jacobsen, Steve Deering and others who invented the UNIX traceroute command.
I am also extremely grateful for the all the feedback I've had on WhatRoute. I've tried to incorporate many of your ideas into the program and I'm always willing to hear your suggestions and criticisms. Thanks folks.
What does WhatRoute Do?
The program is designed to find the names of all the routers through which an IP packet passes on the way from your Macintosh to the destination host. In addition it measures the round-trip time from your Macintosh to the router thus enabling you to determine slow links (hops) in the Internet. It can also find dead links - ie routers that don't respond etc etc. If you have access to a UNIX machine you should read the man page that accompanies 'traceroute'.
Hardware/Software Requirements
1. OpenTransport 1.1 or later. WhatRoute does not work with MacTCP.
2. A network connection - Ethernet or PPP/SLIP
3. A Macintosh computer that uses Colour QuickDraw (68K or PowerPC)
4. System 7.5.3 or later (I've only tested with 7.5.3 but had no reports of failure on earlier 7.5's)
Usage
Simply type an Internet host name or IP address in the field at the top of the screen. Press the return key or click the Trace button, and the window will display the names and IP addresses of all the routers between you and that host. WhatRoute tries each router 3 times and showsthe round trip time (in milliseconds) it takes for a packet to be sent to that router from your Macintosh and for a reply to be returned to you. If there is no reply from the remote host, WhatRoute will print an * instead of the time.
What If WhatRoute Doesn't Work?
If you are unable to get a response from any hosts on the 'net, you may wish to check with your ISP to see if they allow the use of this kind of utility. Some ISPs block the packet types generated and used by WhatRoute. (ICMP and UDP specifically)
Do any of your other network tools work ? eg Eudora, Netscape, etc etc
Please email me (bryanc@ihug.co.nz) if you are completely stumped.
Options
WhatRoute provides options that enable you some control over the operation. In most cases the defaults are satisfactory.
Maximum Hop Count The number of times to increment TTL until the host is declared to be unreachable.
Packet Size The size of the UDP data packet in bytes (including the IP and UDP headers) that WhatRoute sends.
DNS Timeout The amount of time (in seonds) to spend waiting for response from the Domain Name Server. If this time expires, the host name is displayed as an IP address.
Trace Timeout The amount of time (in seconds) to wait for the ICMP response from the last UDP transmission. When this timer expires and * is displayed.
Resolve Names By default, WhatRoute will translate IP addresses to names. If you wish to speed things up a bit, turn this option off and only IP addresses will be displayed.
Start With Clear Display If this option is set, the display pane will be cleared at the start of each trace.
Update Status Bar This currently does nothing. I thought people might want the option to turn off the clock and status bar. I guess I'll enable it if people want.
Beep on Completion This is one of those irritating things that people love or hate. Turn it off if you dont want your Mac to beep when it completes a trace.
How does WhatRoute work ?
The idea is an extremely simple one, but it does rely on some knowledge of the kinds of data packets transmitted over the Internet. I suggest you read a book on TCP/IP theory to get a good understanding of the principles involved. However I will attempt to give a brief (but simplified and maybe partly fictional) description of the process.
Every IP packet on the Internet has a Time To Live (TTL) field in its header. As the packet passes through a router (the processors that connect networks together), the router decrements the TTL by one. Normally, TTL is set to to a large value (such as 255) and the packet makes its way to the destination host.
In the traceroute algorithm (as implemented by WhatRoute) a UDP packet is sent with a TTL value of 1. This value is displayed in the leftmost column. The first router the packet meets, decrements the TTL and says to itself "Uh oh - this packet just died" and sends an ICMP packet back to the source of the original packet - ie your Macintosh. WhatRoute receives this ICMP packet and retrieves the IP address of the router that sent the reply.
The IP address is then resolved back into its host name (with help from the Domain Name Server) and the hostname and IP address are displayed. Each hop is tried three times and the round trip time taken for that hop is displayed (in milliseconds). If there is no response from the router, WhatRoute displays the time as an '*'. If you see a lot of these, then you are traversing slow links.
After three tries, WhatRoute increments the TTL and tries again, finding new routers each time, and displaying the results as it does.
Eventually a packet will reach the destination host. Instead of replying with a 'Packet Died' message, the target host will respond with a 'Port not available' ICMP message. This message signals completion and WhatRoute reports Trace Complete
Whats Not In This version - But is Planned!
1. Printing the display
2. Timestamps at the start and finish of the trace.
3. Tabular output (as opposed to the current UNIX style)
4. Save results to disk
5. Cancel will work while doing DNS lookups (Sorry - its a bit tricky right now)
New In Version 1.1
1. The return key will activate the Trace button.
2. Esc or Command-. will activate the Cancel Button
3. Option settings are saved when you exit and restored when you next run the program.
4. The name of the last host pinged is restored when you start WhatRoute